﻿using MediatR;
using SmartMedicalCare.ErronCode;
using System.ComponentModel.DataAnnotations;

namespace SmartMedicalCare.API.Write.Applications.Commands.二级科室
{
    public class AddDeptSubCategoryCommand : IRequest<APIResult<int>>
    {
        /// <summary>
        /// 【外键】关联所属一级科室的ID
        /// 业务：标记该二级分类属于哪一个科室（如“内科”的ID为2，则二级分类的DepartmentId=2）。
        /// </summary>
        [Required]
        public int DepartmentId { get; set; }
        /// <summary>
        /// 级别
        /// </summary>
        public int Css { get; set; }

        /// <summary>
        /// 【必填】二级分类名称
        /// 业务：二级分类的具体名称（如“心血管内科”“消化内科”“骨科创伤中心”），是用户识别细分专科的核心标识。
        /// </summary>
        [Required]
        [MaxLength(50)]
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 【可选】二级分类简介
        /// 业务：二级分类的特色、擅长领域等介绍（如“心血管内科专注冠心病、心律失常等疾病的诊疗与研究”）。
        /// </summary>
        [MaxLength(500)]
        public string Intro { get; set; } = string.Empty;

        /// <summary>
        /// 状态（1=启用，0=禁用）
        /// 业务：手动控制二级分类信息的“开关”（如某细分专科医生全部外出进修时，临时下线其信息）。
        /// </summary>
        public int Status { get; set; } = 1;

        /// <summary>
        /// 创建时间
        /// 业务：记录二级分类信息的创建时间，用于管理审计（追溯“谁什么时候添加了这个二级分类”）。
        /// </summary>
        public DateTime CreateTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 逻辑删除标记：true=已删除，false=正常
        /// 业务：标记二级分类是否“逻辑删除”，物理数据仍保留在库中，便于追溯历史细分专科信息。
        /// </summary>
        public bool IsDeleted { get; set; } = false;
        /// <summary>
        /// 创建人
        /// </summary>
        public string CreateName { get; set; }
    }
}
